長い道のりも、やっとここまできました。

私が【マシニングセンタ】を作ろうと考え始めたころ一番の難題が
[Mach2/3]の設定についてでした。

なんとか、やっとやっとCNCを操っている私にとって[Mach2/3]は表記が苦手な英語ですし、ある意味ブラックボックス的で、どうもこの点で引っかかりマシニングセンタに着手できなかったのですが・・・・

な・な・んと
[indianaさん]と言う救世主が降臨され私の今までの悩みと難題が一挙に解決しました  

                     
ヽ(^。^)ノ

ツール交換信号を読み込んだ時のMachの挙動を決定する
[マクロ]も考えていただきました。

これで後は[indianaさん]のご教授とおりに[Mach2/3]の設定を完了すれば【マシニングセンタ】もいよいよ完成です。

それでは、まずは[Mach2]若しくは[Mach3]を起動しましょう。

[Mach2]と[Mach3]では各設定のタブやメニューが若干違いますが基本的な考え方は同じですので今回は私の手馴れた[Mach2]を中心に説明を進めましょう。

尚、本ステージにおきましては[indianaさん]からの、ご教授を各所で引用させていただいております。

【 Mach2の設定 】
取り合えずMach2/3の起動です、下記は、みなさん・・・見慣れた[Mach2]と[Mach3]のメイン画面ですね。 




[Mach2/3]の起動を確認しましたら、まず最初に[メニュー]の[Config]→[Ports and Pins]と進みましょう。

ツール交換に係わる信号の入出力設定の大部分は、ここで行います。


この辺は[Mach3]の場合も[Mach2]と全く同じように進みます。
ただ[Mach3]の場合は、このタブにもっと沢山の機能の設定がありますね。

進んで行くと下画像の設定画面が現れますね。
既にMach2/3を使用してCNCを使っておられる方は必ず一度は、お目にかかった画面でしょう  (^。^)

私も含めて初心者の大部分は、この画面で・どうしてかも分らず、ただただ諸先輩の教え通りに数値を打ち込みチェックボックスのON/OFFを行った事やら  (^_^;)


まずは、パラレルポートを増設していますのでMachが、それを自分のデバイスとして扱ってくれなければ話になりません。

前述でパラレルポート(プリンターポート)を増設した時にも、確認しましたが、重要な事ですのでもう一度確認して置きましょう。

[マイコンピュータ]を左クリックして[プロパティ]と進み[ハードアゥアー]から[デバイスマネージャ(D)]を開きましょう。
多分、増設が完了していれば[ポート(COMとLPT)]の下位に[LPT1]以外のLPTが左画像のように認識されているはずです。

今回の場合は[LPT3]として認識しているようです。

[LPT1]とか[LPT3]とかは呼称ですので通常は何番であっても認識さえされていれば特に問題は無いのですが・・・・・世の中には・・『どうしても番号は順番に揃っていなければならない!』って言う真っ直ぐな方もいらっしやいますので・・・

その場合は[デバイスマネージャ]の[LPT3]をクリックしてプロパティを開き、その中の[ポートの設定]のタブの一番下の[LPTポート番号(P)]で好みの番号に変更しましょう・・・今回は[LPT2]にしておきます。

これでLPT1とLPT2と言った具合に気持ち良く番号が揃いましたね・・・(^_^;)
増設ポートもパソコンが無事に認識している事ですので、いよいよMach2/3にも自分の管轄下にあるデバイスとして認識してもらいましょう。

まずは先程の[デバイスマネェージャ]から[LPT2]の[プロパティ]を開いていると思いますので、ついでに[リソース]のタブを開いてみましょう。

そこにはパソコンのメモリー上でI/O(入出力デバイス)として、どの位置(アドレス)に割り当てられているかが表示されます。

今回の場合は[A488]と言う事になりますね。

ちなみに、この[A488]と言う値はみなさんご存知のように16進数の表記ですね。

それでは、先程のMach2/3の設定画面のメインタブである[Port Setup and Axis Selection]を見てみましょう。

この設定タブはMach2もMach3もほぼ同じ画面ですね。

通常の設定では[Port#2]の[Port Enabled]にはチェックが入っていないはずですのでチェックを入れましょう。

そして、その下の空欄になっている[Port Adores]に先程デバイスマネェージャーで確認しましたアドレス(今回は[A488])を入力します
ここで注意ですが、アドレスNOの前位置に[0x]を付加する事を忘れずに
これは16進数で表現しますと言う宣言と言いますか・・・・16進数で言うところのA488・・みたいな感じです。

と・言う事で、この設定でMach2に[A488]のアドレスに取り付けてあるポートを#2のポートとして使いますよって言う認識をさせた事になり、これで初めて増設したパラレルポートの使用が可能になりました。
設定を反映差せる為に・・・設定変更後は必ず右下の[適用]のボタンをクリックしましょう。
【出力の設定】

次はMach2からの出力を設定しましょう。
いわゆる後述します[ツールNO信号](実質的なツール交換信号)になるわけで、この信号によりPLCはATCとしてのツール交換動作を始める訳です。

[Output Signala]タブの[Relay activation signals]のチェックボックスのチェックで設定します。

一般的には[Output #1]〜[Output #3]までは主軸やクーラントポンプのON/OFF等で#1ポートに割り付けて使用済みかもしれませんね。

今回は[Output #3]〜[Output #6]までを[ツールNO信号]として使用しますので全てにチェックマークを入れます。

ちなみにMach3ではOUTPUT20まで扱えますので、クーラント・エアブローなどの共存は非常に楽になります。

取り敢えず、この段階では、どのポートの何番と言う詳細ではなく、出力として[Output #1]〜[Output #6]までのどれを使うかと言う設定です。

余談ですが・・・・・今回はツールが4本ですので単純に割り付けます、ちなみに、この方式ですと[Output #1]〜[Output #6]の全てを使ってもツールの種類は6種類しか使えないのでは・・・・って疑問を持たれる方もいらっしゃるかと思いますが・・・実は4つ程度信号をON/OFFできれば2進数形式で○,○,○,○=8,4,2,1 ですから15種類のツールの選択ができるのです。
いわゆる使用する[Output #3]〜[Output #6]の内[Output #3]を2進数の1桁目〜[Output #6]を4桁目と見立てて設定すれば、もし[Output #3]と[Output #6]がONであった信号は"1.0.0.1"となり場合ツール番号は[9]となりますね。
これはPLC側のロジックで、このようにシーケンスを組んでおけばいとも容易い事ですね。

さて、ここから初めて[Output]をどのポートのどのピンから出力させるかと言う設定に入ります。

まず、Mach2の場合は[Out pins]のタブを開きましょう。
左の下側に位置する[Output #1]〜[Output #6]のチェックボックスですが、これは信号論理を決めるもので出力論理(信号出力時にピンがHighになるかLowになるか)を設定するもので、チェックを入れると信号が出るとピンがLow、非出力時にHighになります。

簡単に言えばMach2からの指令でPCのポートが出力を出す時に"常時OFFで出力時にON"か若しくは"常時OFFで出力時にOFF"かと言う事でリレーで言うところのa接点/b接点と同じような考えですね。

但し、これは単なる好みの問題では無くPC(今回はパラレルポート)に取り付けられるPLCとブレークアウトボード等の動作仕様に合わせて設定する事が必要です。

今回は[Output #3]〜[Output #6]が対象になりますので全てにチェックを入れましょう。

では次ですが、それでは"どのポート"の"どのピン"から出力を出すのかを設定しましょう。

ここは、たんなる設定と言うより実際にハード的にPCとPLCを接続する端子(ピン)番号が必要になります。
今回は分り易くパラレルポート(パラレルケーブル)の#3〜#6をPLCと接続しますので、その通りに設定します。

例えば『[Output #3]は[Port#]"2"の[Pin#]が"3"から出力しますよっ』てぐあいに設定するわけですね。


ただし、この設定だけでT1〜T4などのツール交換信号を読み込んだ時に[Output #3]〜[Output #6]から自動的に信号が出るわけではなく後述します[マクロ]の中で、そのルールや割付を決めておかなければならないようです。


[Mach3]の場合
Mach2では上述のように[Output Signala][Out pins]と個別のタブを開いて設定しましたが、Mach3では下記の一枚の[Output Signala]のタブで出力の全てを設定します。

基本的な考え方は上述のMach2と同じで使用するOutput番号のEnabled欄にチェック(緑)を入れて、後は使用するポート番号(今回は2番)と出力するそのポートのピンの番号を入力したあと"Activ Low"の欄のチェックで信号の論理を設定するだけです。

Mach3の方が視覚的と言うか直感的な意味で設定し易いかもしれませんね  (^。^)





【入力の設定】

さて出力が設定できましたので次は入力の設定をしましょう。

[入力・?] って・・・・?

これはツール交換が終わった時にPLC側からの[ツール交換完了信号]をもらうわけです。

基本的には入力と同じような感じで設定してゆきます。

まずMach2では最初に[Input Signals]のタブを開き[OEM Trigger 1]のチェックボックスにチェックマークを入れます。

これは入力の時と同様に[外部信号(トリガー)]の1番を使いますって言う宣言見たいなものでしょう。
つぎに[Input Pins]のタブで入力の詳細を設定しましょう。

いわゆる[OEM Trigger 1]は[Port #]"2"の[Pins#]は"10"番を使います・・・って言う設定です。

当然ですがハード的にも増設ポート(パラレルポート)の#10ピンがPLCとPC間で接続をしておかなければなりません。

[OEM Trigger 1]の先頭にあるチェックボックスについては上述の[出力設定]と同じように入力の信号論理を決めるものですので信号入力時に入力論理(信号入力時にピンがHighになるかLowになるか)により決定します。

[Mach3]の場合
出力設定と同じようにMach2では[Input Signals][Input Pins]の2枚のタブで出力を設定しましたがMach3の場合は下記1枚の[Input Signals]のタブで設定ができます。

設定画面は違いますが、この設定も基本的にはMach2と同じ考えです。
使用する"OEM Trig"番号のEnabled欄にチェック(緑)を入れて、後は使用するポート番号(今回は2番)と入力されるそのポートのピンの番号(今回は10番)を入力したあと"Activ Low"の欄のチェックで信号の論理を設定するだけです。







これでMach2/3の大まかな設定は完了ですが・・・実はこれだけではMach2/3は[Gコード(NCコード)]に書かれた[ツール交換命令]を読み込んでも・・・・多分・・何の挙動も示さないでしょう。

                  では・・・どうするかと言うと下記なのです。

   はい・・(^。^)

忘れてはいけないのが、これ!

左のようにMach2のツールバーの[Congig]から[Logic Configuration]と進み左中段の[Tool Change]を設定しましょう。

   [Auto Tool Changer]を選択しましょう。

Mach2は最初からATC(ツールチェンジャ)の使用を想定して作られています。

この設定をする事により、はじめて[Gコード(NCコード)]に書かれた[ツール交換命令]を読み込ん時にMach2はツール交換の挙動をはじめます。






Mach3の場合は
ほとんどMach2と同じなのですがMach3の場合はツールバーの[Congig]から[General Config....]と進んで[General Logic Configuration]のタブでMach2と同じように設定します。










この設定は[indianaさん]の易しい説明をそのまま引用しますと

「ツールチェンジコードが出てきたら?」

○Ignore Tool Change/デフォルトの設定で、出てきても無視します。

○Stop Spindle. Wait for Cycle Start./(Machからコントロールされていれば)スピンドルを停止してコード実行を中断します。(手動でツールチェンジするときに使うのでしょう)
余談ですが、この選択時はMachは再開の際にM6End.m1sマクロを呼び出しますので、ここに仕掛けをすれば手動交換の機械でツールセッターを自動化したい際に使えると思います。

◎Auto Tool Changer/今回設定する選択肢です。
この選定によって初めてM6Start.m1sをMachが呼び出すようになります。
【 マクロについて 】

これでMach2/3の設定は入出力については完了です・・・・が・・・ここで考えなければならない事があります。

実際の運用に当って、切削の途中で[ツール交換信号]をMach2が読み込んだ時に、すぐさまツール交換動作に移ってしまったのでは何かと問題があります。

例えば、Z軸をそのままの位置でツール交換のアームを移動させたのではアームの位置が決まっていますのでツールを掴めません最悪の場合はアームが主軸に激突してしまいます。

また何らなの障害で切削を途中からやり直さなければならない・と・言った事情も考えられます。

そこで登場するのが
[マクロ]です・・・"真黒"ではありませんよ・・(^_^;)

いわゆる[ツール交換命令]を受けた時に所定の
"定型動作"をさせようと言う考えです。

これは[Gコード(NCコード)]で切削プログラムを作る時に随時必要な部分にGコードで書き込んでも良いのですが・・・前述のように"定型動作"ですのでMach2側で記憶しておいて単純な"M6 T1"等の[ツール交換命令]を受けた時にMach2の記憶に任せて動作させた方が煩雑な作業から開放されますし"真のマシニングセンタ"と言えるのではないでしょうか。

ここで"Mach2の記憶"と述べた分部が[マクロ]に相当します。

このマクロに所定の必要動作を"定型動作"として設定しておけばMach2は"M6 T1"等の[ツール交換命令]を受けた時に上記の
[Logic Configuration]で選択した[Auto Tool Changer]機能により"定型動作"を自動で行ってくれるのです。


それでは所定の必要動作とは・・・[indianaさん]と相談して

  1.[スピンドル止めてG53でZ0に移動]
       Z=+20 (ワーク座標)に移動して主軸を停止
      座標を〔ワーク座標〕から〔機械座標(絶対座標)〕"G53"に切り替える
       Z軸を〔機械座標〕の"0"に移動(最上部のZ軸原点)

  2.ツール信号出して、動作待機する
      ツール番号#1-4以外では信号出しと動作待機をせず手動再開を待って3.へ

  ** PLC側の制御でツール交換作業

  3.ツール長さを差し引きした指定のZ高さまで移動
      PLCから完了信号を受けると座標を再度〔ワーク座標〕"G54"に切り替える
      [ツールオフセット]での設定を差し引いて刃高さを合わせる

  4.次のGコード実行を再開

それでは上記の内容(所定の定型動作)を盛り込んで[indianaさん]にマクロを作っていただきましょう  ヽ(^。^)ノ


それでは[indianaさん]に作って頂いた、このをMach2がインストールされているマクロフォルダーに入れましょう。
Mach3の場合は、こちらのを上記と同じようにMach3がインストールされているマクロフォルダーに入れましょう。
一般的にはCドライブの直下にインストールされているはずです。
左画像のように、その中の[macros]フォルダーがあり・・・また、その中に[Mach2Mill]と[Mach2Turn]の二つのフォルダーが有りますので[Mach2Mill]の方のホルダーに入れましょう。
ファイル名は必ずMach2/3どちらも"M6Start.m1s"になっているか確認して入れて下さい。

下記が[indianaさん]に作って頂いた
[マクロ]の内容です。

[indianaさん]から頂いた補足説明ですです。

 マクロ頭の設定値は以下の意味になります

 UseAfterZ:別の行で設定するAfterZ値の扱いを指定します。
 = 0 AfterZ値は使用せず、刃先をツールチェンジ前と同じにします
 = 1 AfterZ値をワーク1座標(G54)として刃先をその高さにします
 = 2 AfterZ値を絶対座標(G53)としたZ高さに移動します。刃先(ツール長さ)は考慮されません。

 ToolMax:実装されているツール番号の最大値を設定します。
 = 4の時にT5が指定されると、ツール番号0と見なし
             ツールチェンジ位置(ToolChangeZ:絶対座標)まで移動した後停止します。

 T0(ツール番号0)はMach内部ではリファレンスツール扱いとなり、ツール長は0で固定になります。
 ツールチェンジを使用しない場合に、ツール長さを考慮しない今までの使い勝手が
                                             通用すると思います。

・TimeOut値は実機の所要時間に合わせて秒数にて設定してください。

・UseSerial値
これは当初私が想定していたシリアルポート経由でPLCへの指示を出す部分を残してあるのですが、それを使うか今回のパラレル信号を使うかの選択を行ないます。
設定値は"True"か"False"の2つになります。
今回はパラレルポートを使うので"False"にしてください。
もし他の方がこのマクロを使用する場合に、パラレルポート増設無し+シリアルポートが考えられますので残してあります。
"True"値を設定すると、シリアルポートに"Tool#1"のように出力されます。


 その他の動作変更:
  ・S値が0の場合、スピンドル回転を自動再開しなくなりました
  ・ツールチェンジ信号を出してからメッセージが表示されるようになりました
                                    (44,45行を入れ替えれば今までどおり)

通常は上段の赤文字注釈の分部の変更でOKのようです。

 'ToolChange Macro for YUSA Rev.2010.9.6
'設定値
 Const ToolChangeZ = "0" 'ツールチェンジを行うZ軸高さ(ABS)*マシン座標位置
 Const AfterZ = "20" 'ツールチェンジ後に復帰する高さ*ワーク座標位置
 Const UseAfterZ = 1 '0=AfterZ値は使わず開始前刃先高さ 1=AfterZ値(WORK#1) 2=AfterZ(ABS)
 Const TimeOut = 10 'チェンジ動作を待つ時間
 Const SpindleStartCommand = "M3" 'スピンドル回転開始コマンド
 Const DebugMode = False 'デバックモード使用するしない
 Const UseSerial = False 'シリアルポートで使用するしない(しない場合OUTPUT3-6)
 Const ToolMax = 4 '最大ツール番号

'定数
 Const OEMTRIG1 = 29 '各種ピン(Mach3では定義済み)
 Const OUTPUT3 = 9
 Const OUTPUT4 = 11 'Mach3では10-12の筈
 Const OUTPUT5 = 12 '何故かMach2ではズレている模様
 Const OUTPUT6 = 13 'ダマされた
 Const STOPBTN = 1003

 Call Main '実行開始Mach3では自動

 Sub Main()
 tool = GetSelectedTool()
 CurrentZ=GetToolChangeStart( 2 ) - ToolLengthOffset()

'ツール補正OFF
 Call ExCode( "G49" )

'ツール番号チェック
 If (tool >= 1) and (tool =< ToolMax) Then
'範囲内
 Message "Now Moving to Tool Change Position." & SS
 Call ExCode( "G53G90G00Z" & ToolChangeZ )
 Else
'範囲外か0
'リファレンスツール(0)にセットし、ツールオフセット0、ツールチェンジ位置で待機終了
 SetCurrentTool( 0 )
 Message "*Tool # is Out of range. Will Move to Tool Change Position and Suspend.*"
 Call ExCode( "G53G90G00Z" & ToolChangeZ )
 DoOEMButton( STOPBTN )
 Exit Sub
 End If

 Call SendTool( Tool )
 Message "Now Progress, Change to Tool #" & Tool

 If WaitForTRIG(Timeout) Then
'交換正常終了
 SetCurrentTool( tool )
'ツール補正ON
 Call ExCode ("H" & tool & "G43")
 Message "Tool #" & Tool & " Selected"
'完了位置へ
 Zpos="G54G90G00Z"
 Select Case UseAfterZ
 Case 0
 Zpos = Zpos & CurrentZ
 Case 1
 Zpos = Zpos & AfterZ
 Case 2
 Zpos = "G53G90G00Z" & AfterZ
 End Select
 Call ExCode ( Zpos )
 If GetParam( "SpindleSpeed" )<>0 then
 Call ExCode( SpindleStartCommand )
 End If
 Else
'交換確認できず
 Message "*Tool Change Failed,Because TimeOut.*"
 DoOEMButton( STOPBTN )
 End If
 End Sub

 Function ExCode( strGcode )
'コード実行
 Call Code( strGcode )
 While IsMoving()
 Wend
 End Function

 Function WaitForTRIG( intTimeout )
'トリガ検出
 inTime = Now()
 bolWait = False
 Do While DateDiff("s",inTime,Now()) < intTimeout
'TimeOutDetect code Here
 If IsActive( OEMTRIG1 ) Or DebugMode Then
 bolWait=True
 Exit Do
 End If
 Loop
 WaitForTRIG = bolWait
 End Function

 Function WaitSeconds( intSeconds )
'指定秒数待ち(年月日跨ぎ対応)
 inTime = Now()
 Do While DateDiff("s",inTime,Now()) < intSeconds
 Loop
 End Function

 Function SendTool( intTool )
 If UseSerial Then
 Call SendSerial ("Tool#" & intTool)
 Else
 Call SendPin ( intTool )
 End If
 End Function

 Function SendPin( intTool )
'ツール番号に応じたピンをアクティブに
 Call PinDeactive
 Select Case intTool
 Case 1
 ActivateSignal( OUTPUT3 )
 Case 2
 ActivateSignal( OUTPUT4 )
 Case 3
 ActivateSignal( OUTPUT5 )
 Case 4
 ActivateSignal( OUTPUT6 )
 Case Else
'......
 End Select
 Call WaitSeconds( 3 )
 Call PinDeactive
 End Function

 Function PinDeactive()
'ピンをデアクティブに
 DeActivateSignal( OUTPUT3 )
 DeActivateSignal( OUTPUT4 )
 DeActivateSignal( OUTPUT5 )
 DeActivateSignal( OUTPUT6 )
 End Function

[indianaさん]から教えた頂いたマクロの動作チェックです

まずは安全のためパラレル2とPLCへの接続を切り離し、パラレル2の3ピンにテスターを当てておいてください。(GNDはパラレルポートのシェルや18-25ピンでよい)

パラレル2の10ピンとGNDの間をショートできるプッシュスイッチなどを繋ぎます。(ご使用のARENAの基板はピンがプルアップされていますので短時間であればこれで入力テストできます)

1.Mach2を起動し、Offsets Alt5画面がやりやすいかな・・・DRO表示選択は機械座標(以下ABS)"Machine Coord's"が良いかと思います。
動作確認のためあらかじめ少しZ軸を下げておきます。(ABSで-50.00くらい?)
RESET上のMDIボックスに"M6T1"を入力してEnterします。
メッセージボックスに"Now Moving to Tool Change Position."が出ればマクロの起動設定が反映されてマクロが起動している証拠となり第一段階クリアです。
同時にZ軸がABS 0(ToolChangeZ値)に向かって動き出すはずです。

2.ABSが0になると同時にパラレル2の3ピンが3秒間出力されます。接続したテスターで確認できます。上の発言で論理をLow=Active設定としておられますので、3秒間Lowになるはずです。これで第二段階クリア。

3.メッセージが"Now Progress, Change to Tool #1"に変化し通知待ちになります。
ピン10に接続したスイッチを押すと"Tool #1 Selected"に変わりZ軸が復帰を始めます。これで第三段階クリア。
もし、"TimeOut"値で設定した秒数内にスイッチを押せなかった場合は"*Tool Change Failed,Because TimeOut.*"になります。
また、スイッチを押してないのに即座に"Tool #1 Selected"が出る場合はOEMTrigger1の論理設定が反転している可能性があります。

4.1.でMDIボックスに入れるコマンドを替えて4,5,6ピンについてもテスターで確認します。
"M6T2"→2.で出力されるのは4ピン
"M6T3"→2.で出力されるのは5ピン
"M6T4"→2.で出力されるのは6ピン
これでマクロとピン設定の確認は完了になります。

変な動きをしてなければ、PLCを接続してみてください。たぶんだいじょぶです。

今回作って頂いた[マクロ]は私が今回作っているマシニングセンタ専用の物ではなく手動でツールチェンジを行う場合や他の機械への流用も可能な内容で入出力もパラレル増設に限らずシリアルポートでの使用も選択できますので皆さん是非ご参考にして下さい。
【工具(刃物)長さの補正を設定しよう】

[マクロ]も上手く行き・・・実際にATC機能でツールを交換して切削・・・・そして再びツール交換・・・・ムッムッ〜 (ーー;)

下画像のようにツールによって刃物が違う(当たり前!)・・・いわゆる刃物の長さも違う・・・(@_@;) ヤバっ〜

刃物の突き出しを合わせるにせよΦ2.0とΦ10.0では極端に長さの違いが有り突き出しを合わせるのは限界がある・・・

じゃ・・・ツール交換の度に手動でZ値を調整しようか・・・これじゃ[マシニングセンタ]とは言えない・・

 そうそう・・・そうだ・・確かMach2/3に[工具長補正]って機能があったはずだぁ〜 よし ! やってみよう 


               これが無事機能すれば馬鹿チョンで超楽々だぁ〜  ヽ(^。^)ノ 



まずは[Mach2]を起動して[Operator]から[Tool Tabie...]を開きましょう。

余談ですが、みなさんご存知のこのメニューでは[Control OffLine]と言うCNC未接続状態でのシュミレーションを行う機能や名前の通りにロックをかける[Lock]等々の機能の選択ができますね。






Mach3の場合

[Config]から[Tool Tabie...]を開いてゆきます。

余談ですがMach2からMach3になって機能が増えこの[Config]のメニューに集約されたようですね。

ただ基本的な設定等についてはMach2と粗同じ考え方で良いでしょう。

さて[Tool Table]を開くと下の様なツール設定画面が表示されます。
下記はMach2を例にとって説明いたしますがMach3も粗同じように設定すればOKです。

[Tool]はご承知のように"使用するツール番号"[Description]は多分"識別呼称"で[Diameter(D)]は"刃径"・・・[Material]は"刃物の材質"とでも解釈しておけば良いのでは無いでしょうか(・・・・・・何分にも英語が苦手なもので)  (^_^;)

さて、ここで今回の設定で一番重要なのは[Z Offset(H)]で通称[ツールオフセット]と呼ばれる物で、この欄の設定値によりツール(刃物)のZ軸方向に対してのオフセット(補正量)を決めるわけです。

今回の設定は通常切削開始に使う[T1]を基準ツールとして他のツール(刃物)が、その基準ツールの長さに対して"どれだけ長いか/短いか"を設定してみましょう。

   よく分りませんが・・・・取り合えず・・・実行あるのみ !   レッツ・トライ  ヽ(^。^)ノ

  設定終了後は必ず最下段の[Save Table]を押して設定内容を保存しておきます。

そんなんで説明に自信がないので[indianaさん]に再び補足説明をお願いしました  (^_^;)
[indianaさん]からの補足説明

上のYUSAさんの[Tool Table]の設定は下記のとおり長さの違うエンドミルをセットしたと言う事で

    T1=0(基準)
    T2=T1より-5.0mm短い
    T3=T1より-8.0mm短い
    T4=T1より+3.0mm長い

  この条件を前提にして補足説明をしますと

下の上図では補正を行わない場合で材料の上面が0としたとき、この場合、#1から#2番目のツールにすると、G54で0でも実際の刃先は+5のところになり、切削命令ではZ-5が材料面として考えなくてはいけなくなります。
#1から#3にしたときはZ-8、#4ならZ+3が・・これでは・Gコード書くときは大混乱ですよね。



そこで次の下の図は工具長補正を用いた場合です。
上記と同様に、それぞれ刃の長さは違いますが、その長さの違いは、Z軸の絶対値側で吸収させてしまい、G54座標ではどの刃物に交換しても材料上面は常にZ0として扱えます。

使う刃物の長さが変わっても、ツールテーブルに正確な値を設定すれば勝手にやってくれます。



この補正はチェンジャーが無い環境でも刃物交換時や切削開始時に日常的に行っていることですよね。
(手動やゼロセッターでワーク座標をオフセットすることで)

これらはG54(ワーク1座標で)Z+20にセットして、20mm下が材料面としても大丈夫です。(20mm丸棒でのセット法で刃先を一度合わせればどの刃物に変えても常に20mm下が材料面として扱える)

もちろん工具補正コードはGコードなので、Gコードリストに埋め込んでもいいのですが
  ・刃が摩耗したので交換した
  ・他の機械に流用する
といった時には書き換えが必要になります。
交換マクロ側でやってしまえば、Gコードリスト側は楽になります。

このようにツールテーブルに設定する工具長は、
 ・基準工具を何か定めてそれに対する+-相対値・・・現在のYUSAさんの設定値ですね
 ・コレットやテーパーを基準にした+値(突き出し量とでも表現するべきでしょうか)
が考えられると思います。-値うまく動くかなー?と思って追試してみると、それらしく動いてますので、どちらでも良いと思います。


せっかく[indianaさん]に作って頂いたマクロもMach2で行った[工具長補正]の設定も実際の刃物長さと一致してない事には全く話にはなりませんね。

そこで今回は[Mitutoyo]の[スプライン・マイクロメータ]を一個潰して[刃高ゲージ]を作りましょう。

このスプラインマイクロメーターと言うのは測定範囲が0〜25mmですがサイズは50〜75mmと同じサイズでアームが長いので、このように加工流用する場合に非常に適していますね。

作ると言っても、そう大げさなな事ではなくマイクロメーターのアームの先端をカットして適当な台に取り付ければOKです。

コレットのキャップ上面は実装する刃物のシャンクの径により締め代が変わりますので結果高さも変わってしまい基準面にはなりませんので・・・・取り合えず使い勝手も考えてテーパーの根元のフランジ面を[基準面]にする事にしましょう。

これですと台にツールホルダーを逆さまに置くだけでOKですね。

取り合えずは[T1]に相当するツールホルダーをセットしてマイクロメーターを[ゼロセット]しましょう。

後は[T2]・[T3]・[T4]と順番に刃高さを測りメモしてゆきましょう。
いわゆる[T1]を"ゼロセット"で基準にしましたので、それに対してのプラス/マイナスの値を測定してゆき記録すると・言う事です。

測定と記録が終わりましたら上述のMach2の[Tool Table][Z Offset(H)]の各欄に、計測値を入力しましょう。

全てが完了しましたら各ツールをマガジンに順番を間違わないようにセットするだけです。
できればツールホルダーにもツール番号をマーキングしておいた方が良いかもしれませんね。
よしよし・それでは[工具長補正]も調いましたので、いよいよ切削プログラム(Gコード)を作って走らせて見ましょう。
【 Gコード(NCコード)の書き方 】

一般的にはCADで書いた図面(ツールパス)をNCVCなどのソフトを使ってGコード(NCコード)を生成されると思います。
そこまでの手順は従来通りですが、その後にツール交換の為のちょっとした修正が必要です。

通常は手動であり自動であり刃物(ツール)を交換する場合は、それぞれ作図の段階でツールパスを変えますね。
多分、合理的に[Layer(レイヤー)]を変えて作図されていると思いますので生成されたGコードも、よく見ると下左で色分けしましたようにレイヤー毎のブロックに分かれています

そうです・・(^。^)  このレイヤー毎のブロックの間に[ツール交換命令]を挿入追記すれば良いのです。
ですからGコードを標準で生成する段階で[行番号]をつけて生成するのであれば、後から挿入し易いように[行番号の増加数]を"10"単位くらいにしておいた方が良いでしょう。

下記の例では単純な丸と四角の切削ですが[N0060]から
[Layer="CAM01"]がスタートして[N0120]で[Layer="CAM02"]に替わります。

ゆえに、右のように[N0110行]と[N0120行]の間に空欄を挿入して 、その分部に
ツール交換命令である[M6]ツール番号である[T2(T1〜T4)]を書き込めば完了です。

ちなみに[N0112行]のように一手間増えますが X=0 と Y=0 を書き込んでツール交換前には一旦[ワーク原点]に主軸を戻しておけば不慮のトラブルの場合に対処が簡単かと思います。

おっ〜と・・・忘れてはいけない事がありました。  ・・・・・・(^_^;)
切削開始とともに、まず最初の刃物(ツール)を取りに行かせる場合は[N0052行]のように最初のツール交換命令が必要ですね。

ただし、切削開始時は・・・当然・主軸の刃物高さ(Z値)をゲージなどで合わせる作業がありますので・・・いわゆる、この場合ツール[T1]は既に装着されているはずですので実際には、この"N0052行のM6 T1"は不要だと思います。


この様に標準で生成されたGコード(NCコード)をテキストモードなどで開いて簡単な挿入追記を行えば簡単にツール交換ができるようです。

このGコードの文法(記載方法)について[indianaさん]に教えていただいたところ下記のような使い方でも良いとの事でした。


    同じ行内であればM6とT1は逆順の「T1 M6」でも良いようです。行を跨いで
    N0001 T1 ←ツール番号1を指定
    N0002 G53G90G00Z10 ←命令を挟んでみます
    N0003 M6 ←実際に1番ツール交換開始

    のような記述もでき、Gコードの予令・動令則が通じます。

【NCVCによる標準生成】 【 挿入追記 】

 %
 N0030 G90G54G92X0Y0Z20.
 N0040 S8000
 N0050 M03
 N0060 (Layer="CAM01" start)
 N0070 G00Y-20.
 N0080 Z5.
 N0090 G01Z-1.F50
 N0100 G02J20.F1000
 N0110 G00Z5.

 N0120 (Layer="CAM02" start)
 N0130 S6000
 N0140 X15.Y-15.
 N0150 G01Z-2.F50
 N0160 X-15.F500
 N0170 Y15.
 N0180 X15.
 N0190 Y-15.

 N0200 G00Z20.
 N0210 M09
 N0220 M05
 N0230 X0Y0
 N0240 M30
 %

 %
 N0030 G90G54G92X0Y0Z20.
 N0040 S8000
 N0050 M03

 N0052 M6 T1

 N0060 (Layer="CAM01" start)
 N0070 G00Y-20.
 N0080 Z5.
 N0090 G01Z-1.F50
 N0100 G02J20.F1000
 N0110 G00Z5.


 N0112 G00 X0 Y0
 N0114 M6 T2

 N0120 (Layer="CAM02" start)
 N0130 S6000
 N0140 X15.Y-15.
 N0150 G01Z-2.F50
 N0160 X-15.F500
 N0170 Y15.
 N0180 X15.
 N0190 Y-15.

 N0200 G00Z20.
 N0210 M09
 N0220 M05
 N0230 X0Y0
 N0240 M30
 %
Gコードの書き方も分りましたので次のステージで、いよいよ【マシニングセンタ】を動かして見ましょう。

如何でしただしょうか、ここまでの長い道のりは"聞くも涙・・・語るも涙・・(T_T)・"・・なんてな事は無く・・(^_^;)

ただ単に『食わず嫌い』と言うよりも『わからず嫌い』で腰が引けておりましたが[indianaさん]はじめ皆さんのご指導で真剣にやってみたところ・・・『ムフフ・・(^。^)』でした。

人間は全知全能の神様じゃありませんので私のように不得意な分野で滞る事無く諸氏諸先輩で得意な方にご教授賜りましょう。

ただ何でもかんでも、ただ最初から聞くのでは無く自分で最低限の努力をして、それで分らない部分を真摯な態度で教えていただく事が重要ですね。


でも今回は本当に皆様に助けられてここまで辿り着きました。ご協力戴きました皆様に心より御礼申し上げます。


       本【特集】も、あとは実機運転を残すばかりとなりました。

     あと、もう少しですので最後までお付き合い戴ければ幸いでございます。